import {sprintf} from 'sprintf-js'
enum TraceType {
  EC_INFO = "info",
  EC_DEBUG = "debug",
  EC_WARN = "warn",
  EC_ERROR = "error",
  EC_FATAL = "fatal",
}
export const initTrace = function (trc: any) {
  window.EC_ERROR = TraceType.EC_ERROR;
  window.EC_DEBUG = TraceType.EC_DEBUG;
  window.EC_FATAL = TraceType.EC_FATAL;
  window.EC_INFO = TraceType.EC_INFO;
  window.EC_WARN = TraceType.EC_WARN;
  window.Trace = (level: TraceType, format: string, ...args: any[]) => {
    const trace = trc;
    let msg = sprintf(format, ...args)
    if (level === TraceType.EC_INFO) {
      trace.Info(msg);
      console.info(msg);
    } else if (level === TraceType.EC_DEBUG) {
      trace.Debug(msg);
      console.debug(msg);
    } else if (level === TraceType.EC_ERROR) {
      trace.Error(msg);
      console.error(msg);
    } else if (level === TraceType.EC_FATAL) {
      trace.Fatal(msg);
      console.warn(msg);
    } else {
      trace.Debug(msg);
      console.warn(msg);
    }
  };
};
